package com.yc.cloud.admin.service;

import com.yc.cloud.admin.dto.request.AlarmRecordUploadReqDTO;
import com.yc.cloud.admin.dto.request.AlarmRecordUploadFileReqDTO;
import com.yc.cloud.admin.dto.request.ClientStrategyQueryParam;
import com.yc.cloud.admin.vo.AlarmRecordVo;
import com.yc.cloud.admin.vo.ClientStrategyVo;
import com.yc.cloud.admin.vo.ClientStrategy2Vo;

import java.util.List;

/**
 * <p>
 * 客户端API 服务类
 * </p>
 *
 * @author kinggu
 * @since 2025-07-16
 */
public interface ClientApiService {

    /**
     * 根据设备SN获取其应用的策略和规则列表
     * @param deviceSn 设备SN
     * @param param 可选查询参数（如applicationId等）
     * @return 客户端策略视图对象列表
     */
    List<ClientStrategyVo> getStrategyForDevice(String deviceSn, com.yc.cloud.admin.dto.request.ClientStrategyQueryParam param);

    /**
     * 上传报警信息（包含图片和检测位置信息）
     * @param uploadReqDTO 上传请求DTO
     * @return 上传后的报警记录VO
     */
    AlarmRecordVo uploadAlarmInfo(AlarmRecordUploadReqDTO uploadReqDTO);

    /**
     * 上传报警信息（文件上传版，便于Postman测试）
     * @param uploadFileReqDTO 上传请求DTO（含文件）
     * @return 上传后的报警记录VO
     */
    AlarmRecordVo uploadAlarmInfoByFile(AlarmRecordUploadFileReqDTO uploadFileReqDTO);

    List<ClientStrategy2Vo> getStrategyForDevice2(String deviceSn, ClientStrategyQueryParam param);
}
